<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>计算属性简写</title>
    <script type="text/javascript" src="../js/vue.js"></script>
    <script type="text/javascript">
      Vue.config.productionTip = false;
    </script>
  </head>
  <body>
    <div id="root">
      姓：<input type="text" v-model="firstName" />
      <br />
      名：<input type="text" v-model="lastName" />
      <br />
      其他信息：<input type="text" placeholder="不影响计算属性" />
      <br />
      <!--直接使用计算属性，可将其内部计算理解为函数表达式，不要直接调用方法-->
      全名：<span>{{fullName}}</span>
      <br />

      <!--计算属性最重要的一个特性，有缓存功能。
          1：初次读取时会调用get方法，以后都从缓存拿。
          2：依赖的数据发生变化时，才重新调用更新数据。
      -->
      全名：<span>{{fullName}}</span>
      <br />
      全名：<span>{{fullName}}</span>
      <br />
      全名：<span>{{fullName}}</span>
      <br />
    </div>
  </body>

  <script type="text/javascript">
    const vm = new Vue({
      el: "#root",
      data: {
        //data中的即为属性和属性值
        firstName: "张",
        lastName: "三",
      },
      computed: {
        //完整写法
        // fullName: {
        //   get() {
        //     console.log("get被调用了");
        //     return this.firstName + "-" + this.lastName;
        //   },
        //   set(value) {
        //     console.log("set被调用了，" + value);
        //     const arr = value.split("-");
        //     this.firstName = arr[0];
        //     this.lastName = arr[1];
        //   },
        // },

        //计算属性多半情况下，都是用作查询，此时可简化写法。   切记只有读取时才简化！
        //在属性名后面添加函数fullName:function()，代替get方法。  并可进一步简化为只带括号
        fullName() {
          console.log("get被调用了");
          return this.firstName + "-" + this.lastName;
        },
      },
    });
  </script>
</html>
